package hcn.protocol.ods.paymentXML;

import javax.xml.bind.annotation.*;
import java.io.Serializable;
import java.util.List;

/**
 * @Author:FangZhiyi
 * @Description 门诊预结算（XML）请求入参
 * @Data Created in 2020/11/5 13:43
 * @Moddified By:
 */
@XmlRootElement(name = "MsgBody")
public class GetPrecalculatedFeeXMLReq implements Serializable {
    /*机构id*/
    private String VisitOrganization;
    /*患者在 his 中的唯一标识*/
    private String SourcePatientId;
    /*病人性质（医疗保险类别）*/
    private String PatientProperties;
    /*发药方式：1：到院自取2： 送药上门*/
    private String TakeWay;
    /*详细地址*/
    private String Address;
    /*姓名*/
    private String Name;
    /*手机号*/
    private String ContactNo;
    /*代煎标志：0：不代煎1：代煎*/
    private String BoilSign;
    /*代煎费用*/
    private String BoilFee;
    /*快递费用*/
    private String ExpressFee;
    /*总费用*/
    private String TotalCost;
    /*收费单据集合*/
    private List<FeeRecord> FeeRecordLists;

    private List<String> VoucherIdList;


    @XmlElementWrapper(name = "VoucherIdList")
    @XmlElement(name = "VoucherId")
    public List<String> getVoucherIdList() {
        return VoucherIdList;
    }

    public void setVoucherIdList(List<String> voucherIdList) {
        VoucherIdList = voucherIdList;
    }

    @XmlElement(name = "VisitOrganization")
    public String getVisitOrganization() {
        return VisitOrganization;
    }

    public void setVisitOrganization(String visitOrganization) {
        VisitOrganization = visitOrganization;
    }

    @XmlElement(name = "SourcePatientId")
    public String getSourcePatientId() {
        return SourcePatientId;
    }

    public void setSourcePatientId(String sourcePatientId) {
        SourcePatientId = sourcePatientId;
    }

    @XmlElement(name = "PatientProperties")
    public String getPatientProperties() {
        return PatientProperties;
    }

    public void setPatientProperties(String patientProperties) {
        PatientProperties = patientProperties;
    }

    @XmlElement(name = "TakeWay")
    public String getTakeWay() {
        return TakeWay;
    }

    public void setTakeWay(String takeWay) {
        TakeWay = takeWay;
    }

    @XmlElement(name = "Address")
    public String getAddress() {
        return Address;
    }

    public void setAddress(String address) {
        Address = address;
    }

    @XmlElement(name = "Name")
    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    @XmlElement(name = "ContactNo")
    public String getContactNo() {
        return ContactNo;
    }

    public void setContactNo(String contactNo) {
        ContactNo = contactNo;
    }

    @XmlElement(name = "BoilSign")
    public String getBoilSign() {
        return BoilSign;
    }

    public void setBoilSign(String boilSign) {
        BoilSign = boilSign;
    }

    @XmlElement(name = "BoilFee")
    public String getBoilFee() {
        return BoilFee;
    }

    public void setBoilFee(String boilFee) {
        BoilFee = boilFee;
    }

    @XmlElement(name = "ExpressFee")
    public String getExpressFee() {
        return ExpressFee;
    }

    public void setExpressFee(String expressFee) {
        ExpressFee = expressFee;
    }

    @XmlElement(name = "TotalCost")
    public String getTotalCost() {
        return TotalCost;
    }

    public void setTotalCost(String totalCost) {
        TotalCost = totalCost;
    }

    @XmlElementWrapper(name = "FeeRecordLists")
    @XmlElement(name = "FeeRecordList")
    public List<FeeRecord> getFeeRecordLists() {
        return FeeRecordLists;
    }

    public void setFeeRecordLists(List<FeeRecord> feeRecordLists) {
        FeeRecordLists = feeRecordLists;
    }

    public static class FeeRecord{
        /*收费单据标识*/
        private String FeeNo;
        /*类型代码*/
        private String FeeTypeCode;
        /*类型名称*/
        private String FeeTypeName;
//        private List<DetailsItemsBean> DetailsItemLists;

        @XmlElement(name = "FeeNo")
        public String getFeeNo() {
            return FeeNo;
        }

        public void setFeeNo(String feeNo) {
            FeeNo = feeNo;
        }

        @XmlElement(name = "FeeTypeCode")
        public String getFeeTypeCode() {
            return FeeTypeCode;
        }

        public void setFeeTypeCode(String feeTypeCode) {
            FeeTypeCode = feeTypeCode;
        }

        @XmlElement(name = "FeeTypeName")
        public String getFeeTypeName() {
            return FeeTypeName;
        }

        public void setFeeTypeName(String feeTypeName) {
            FeeTypeName = feeTypeName;
        }
//        @XmlElementWrapper(name = "DetailsItemLists")
//        @XmlElement(name = "DetailsItemList")
//        public List<DetailsItemsBean> getDetailsItemLists() {
//            return DetailsItemLists;
//        }
//
//        public void setDetailsItemLists(List<DetailsItemsBean> detailsItemLists) {
//            DetailsItemLists = detailsItemLists;
//        }

        @XmlAccessorType(XmlAccessType.FIELD)
        public static class DetailsItemsBean {
            /**
             * 项目明细：中草药方一个处方一条明细，其他类型处方和检查等不做特殊处理
             * mergingCode : 归并代码(1西药费、2中药费、3草药费、4检查费、5检验费、6代煎费、7快递费等)
             * itemName : 费用名称（中草药方的费用名称为该处方的所有药品与数量单位的拼接，
             * 把数量和单位放在英文括号中，各药品之间用四个空格分隔。比如一个中草药处方有8味药，itemName字段的值示例如下:人参(4g) 卜芥(4g) 丁香(4g) 刀豆(4g) 干姜(4g) 广白(4g) 大蓟(4g) 山丹(4g)
             * itemNumber : 数量（中草药方的数量为该药方的帖数,如：五帖，该字段值传：共五帖）   string
             * price : 单价（中草药方的单价为空）
             * fee : 金额（中草药方的金额为该处方的金额）
             * unit : 单位
             * specifications : 规格
             * itemRemark : 项目备注
             */
            /*费用序号*/
            private String CostId;
            /*费用名称，只显示一个费用（之前是多个拼接）*/
            private String CostName;
            /*药品类型*/
            private String ItemType;
            /*数量，草药显示每贴的数量*/
            private String CostNumber;
            /*处方贴数，西药默认1*/
            private String PiecesChineseMedicineAgentNumb;
            /*单价，中草药方的单价为空*/
            private String CostPrice;
            /*金额，中草药方的金额为该处方的金额*/
            private double TotalCost;
            private String NumberUnit;
            private String DrugSpecifications;
            private String Remark;

            public String getCostId() {
                return CostId;
            }

            public void setCostId(String costId) {
                CostId = costId;
            }

            public String getCostName() {
                return CostName;
            }

            public void setCostName(String costName) {
                CostName = costName;
            }

            public String getItemType() {
                return ItemType;
            }

            public void setItemType(String itemType) {
                ItemType = itemType;
            }

            public String getCostNumber() {
                return CostNumber;
            }

            public void setCostNumber(String costNumber) {
                CostNumber = costNumber;
            }

            public String getPiecesChineseMedicineAgentNumb() {
                return PiecesChineseMedicineAgentNumb;
            }

            public void setPiecesChineseMedicineAgentNumb(String piecesChineseMedicineAgentNumb) {
                PiecesChineseMedicineAgentNumb = piecesChineseMedicineAgentNumb;
            }

            public String getCostPrice() {
                return CostPrice;
            }

            public void setCostPrice(String costPrice) {
                CostPrice = costPrice;
            }

            public double getTotalCost() {
                return TotalCost;
            }

            public void setTotalCost(double totalCost) {
                TotalCost = totalCost;
            }

            public String getNumberUnit() {
                return NumberUnit;
            }

            public void setNumberUnit(String numberUnit) {
                NumberUnit = numberUnit;
            }

            public String getDrugSpecifications() {
                return DrugSpecifications;
            }

            public void setDrugSpecifications(String drugSpecifications) {
                DrugSpecifications = drugSpecifications;
            }

            public String getRemark() {
                return Remark;
            }

            public void setRemark(String remark) {
                Remark = remark;
            }
        }
    }
}
